<?php defined('SYSPATH') or die('No direct script access.');

class Controller_First extends Controller_Default_Template {

	public function action_index()
	{
		$first_inner = array();
		$first = array();

		$this->template->title            = 'Kohana 3';
		$this->template->meta_keywords    = 'PHP, Kohana, KO3, Framework';
		$this->template->meta_description = 'A test of of the KO3 framework';
		$this->template->styles = array('assets/css/red.css' => 'screen');
		$this->template->scripts = array('assets/js/jqtest.js');

		View::set_global('x', 'Это глобальная переменная');

		$first_inner['content'] = 'У нас есть ещё данные';
		$first['content']       = 'У нас есть данные!';
		$first['first_inner'] = View::factory('blocks/first_inner', $first_inner)
			->render();

		$this->template->content = View::factory('pages/first', $first);
	}

	public function action_posts()
	{
		// Загружаем модель
		$posts = Model::factory('post');

		$first = array();
		
		$this->template->title            = 'Kohana 3.0 Model Test';
		$this->template->meta_keywords    = 'PHP, Kohana, KO3, Framework, Model';
		$this->template->meta_description = 'A test of the KO3 framework Model';
		
		$this->template->styles  = array('assets/css/post.css' => 'screen');
		$this->template->scripts = array();
		
		$firs['msg']      = '';
		$firs['msg_type'] = '';
		
		// Обрабатываем POST
		if($_POST)
		{
			$ret = $this->_add_post(
				Security::xss_clean(Arr::get($_POST, 'title', '')), // Очищаем элемент $_POST['title']
				Security::xss_clean(Arr::get($_POST, 'post', ''))); // Очищаем элемент $_POST['post']

			if(isset($ret['error']))
			{
				$first['msg']      = $ret['error'];	// Текст ошибки
				$first['msg_type'] = 'error';		// Класс сообщения в отображении
			}
			else
			{
				$first['msg']      = 'Сохранено.';
				$first['msg_type'] = 'success';
			}
		}		

		// Получаем 10 последних записей
		$first['posts'] = $posts->get_last_posts(10);

		$this->template->content = View::factory('pages/posts', $first);
	}
	
	/**
	 * Метод посредник для добавления записи в таблицу 
	 * @param string $title         Текст заголовка
	 * @param string $post_content  Текст сообщения
	 * @access private
	 */
	private function _add_post($title, $post_content)
	{
		// Загружаем модель
		$post = Model::factory('post');

		// Проверям обязательные поля
		if(empty($title))
		{
			return(array('error' => 'Пожалуйста введите заголовок.'));
		}
		elseif(empty($post_content))
		{
			return(array('error' => 'Пожалуйста введите сообщение.'));
		}

		// Записываем в базу данных
		$post->add_post($title, $post_content);
		return TRUE;
	}
} //End
